As it is generally known, Internet bookmarks (“bookmarks”) are stored Web page locations, typically in the form of Uniform Resource Locators (URLs). Bookmarks are a feature modern Web browsers, and allow convenient cataloging of and access to Web pages. For example, bookmarks are provided through the “Favorites” feature in Microsoft®'s Internet Explorer Web browser. Existing systems have provided bookmark setting and retrieval features in the Web browser user interface. In addition to bookmarking features provided in Web browsers, many external applications exist for bookmark management.
Social bookmarking systems have been developed that allow users to store bookmarks such that they are not tied to one specific computer or Web browser. Web-based bookmarking services enable users to save bookmarks on a remote Web server as part of a structure referred to as a “folksonomy”. Such shared bookmarks can then be accessed by all or a group of users. Examples of existing social bookmarking systems include del.icio.us, Google™ bookmarks, Yahoo® Bookmarks and Microsoft Windows® Live Favorites.
With the advent of AJAX (Asynchronous JavaScript and XML) and sophisticated DHTML (Dynamic HTML) techniques to manipulate the Web page content on client computer systems, a significant issue arises with regard to providing stable bookmarkability of content that may be dynamic rather than static during a user session. While a Web page may have a single non-changing URL stored in the Web browser, the content in many Web sites is asynchronously changed and replaced using the widely adopted back-channel communication routine called XMLHttpRequest. Accordingly, when the user sets a bookmark he may only be able to capture the starting URL of the Web site instead of the exact content state he is currently viewing. Users therefore will desire a way to bookmark a dynamic Web page in a way that allows them to restore a specific content state, and to further have the ability to share the bookmark from within the Web browser using simple and familiar cut and paste actions.
Some attempts have been made to address these problems, but have only been partially successful. Applications like Google Maps address Web browser bookmarkability by providing a link on a Web page that the user must click on to manually update the URL stored in the Web browser to a serialized version of the application state. If the user does not click on this link, then later reuse of the URL stored in the Web browser will not reload the expected state. Significant drawbacks of this technique are that it requires that the user be aware of the need to click the link on the page before copying or bookmarking the URL, and that an underlying AJAX/DHTML Web application is able serialize its state into a single URL.
Backbase AJAX Engine (utilized by the Backbase on-line developer forum) is an existing technique that records application state within the Web browser URL without manual intervention by the user. When navigating the Backbase developer forum, the current URL loaded into the Web browser is updated with a hash identifier that represents the current state. For example, the following URL:
http://www.backbase.com/#forum/messageThread.html%3Fforum=1&thread=1264[4]
indicates that the user is viewing forum 1 and thread 1264. If the above URL is copied and e-mailed to another user, when the other user clicks on the URL the site http://www.backbase.com is loaded into the Web browser, and the AJAX library initialized. On page load, the AJAX library retrieves the hash part of the URL and performs the necessary actions to render the desired state. This solution eliminates the need for manual user intervention, but still requires that the application state be serialized in the URL. As in any solution requiring application state serialization in the URL, sensitive data may be exposed in the resulting URL, even over an HTTPS connection. Additionally, this type of solution is limited by the fact that URLs can only be as large as 2 k characters.
Dojo is a JavaScript library that handles “Back” and “Forward” Web browser button events. Through Dojo intercepting these events, the developer is allowed to specify in JavaScript what the desired action should actually be. One major weakness of this approach is that these functions are in JavaScript, and so the burden of persisting state is on the JavaScript author. If the Web browser leaves the DHTML page, all JavaScript objects are reset when the Web browser returns (i.e. by way of the Back button), and state must therefore be stored elsewhere. In addition, this framework provides minimal assistance for bookmarkability. Dojo allows the developer to specify what value should be put in a hash statement after an AJAX call so the developer can encode application state for later reloading, as in the above described Backbase approach.
The Really Simple History (RSH) framework adds some additional support beyond Dojo by using Web browser forms to address the transient nature of JavaScript objects. This approach provides will persistence when the Web browser navigates away from the application and then back again, but still cannot support cross-browser sessions, sending or saving of bookmarks, or social bookmarking (i.e. del.icio.us).
The AJAX Massive Storage (AMASS) system addresses the cross-browser session limitations of the RSH using a Flash applet to store the hash data, but still does not provide for sharing of bookmarks with others through copy and paste.
For the above reasons and others it would be desirable to have a new system for providing stable bookmarkability of Web pages that addresses the above described shortcomings of existing systems.